Generally, in an enterprise environment, an administrator employs a distribution system 110 to deploy a software package to one or more computer machines. However, deploying a software package to a computer machine without testing can have unintended consequences. For example, an administrator distributing a software package to a computer machine runs the risk that an application or patch may conflict with other installed applications on the computer machine.
Some of the possible consequences of a software package conflicting with an existing application include: leaving resources behind during un-installation, removing resources used by another installed application, and disabling another installed application. For example, Application A to be installed on a machine may share a common file with Application B already existing on the machine. Subsequent to installing Application A on the machine, if Application B is uninstalled, the common file may be removed from the machine, thus breaking Application A. Similarly, if Application A is uninstalled, the common file may be removed from the machine, thus breaking Application B. The resulting conflicts can cause serious damages by crashing mission-critical applications, reducing employee productivity, and increasing information technology costs.
In the past, to minimize software conflicts, an administrator may install a software package on a given computer machine to identify any conflict between the software package and an existing application on the computer machine. However, such an approach effectively installs the software package on the computer machine such that if a conflict actually occurs, additional time and effort are spent to correct the problem. In addition, different machines have different installed applications and software dependencies. For example, software configuration on a given machine may change over time, and an end-user may install other non-enterprise software on his or her machine. Thus, identifying a potential conflict on a given machine does not mean that other machines having the same applications will be subject to the same conflict. Similarly, the fact that a conflict does not result from installing a software package on a given machine does not mean that installing the software package on other machines having the same applications will not result in a conflict.
Alternatively, an administrator may test an application's various functions before deployment and attempt to fix the potential problems. This manual conflict checking process adds additional time and effort to application deployment. These problems make it difficult to test and deploy software packages efficiently.